/**
 * 通用的一些脚本函数
 */

/**
 * 阻止网页后退等操作。
 */
function protect() {
	if (event.altKey && event.keyCode == 37) { // 屏蔽backspace
		alert('网页后退已阻止...!');
		event.keyCode = 0;
		event.returnValue = false;
	}
}

// 忽略回车
function skipRC() {
	if (event.keyCode == 13) {
		event.returnValue = false;
	}
}

// 只能输入中文，比较粗略的方法
function mustChinese() {
	if (event.keyCode < 256) {
		event.returnValue = false;
	}
}

// 只能输入ASCII字符
function mustASCII() {
	if (event.keyCode > 256) {
		event.returnValue = false;
	}
}
// 只能是ASCII字符串
function isASCIIString(obj) {
	for (var i = 0; i < obj.length; i++) {
		if (obj.charCodeAt(i) > 256) {
			return false;
		}

	}
	return true;
}

// 只能是有效数值（整数、浮点数）
function mustNumber() {
	if (event.keyCode < 45 || event.keyCode > 57) {
		event.returnValue = false;
	}
}
function filterAscii() {
	if (event.keyCode == 62) {
		event.returnValue = false;
	}
}
// 只能是数字（不能包含小数点）
function mustDigit() {
	if (event.keyCode < 48 || event.keyCode > 57) {
		event.returnValue = false;
	}
}

// 检查一个对象是否存在
function isExist(s) {
	if (eval(s) == null) {
		return false;
	}

	return true;
}

// 清除字符串前导空格和拖尾空格
function trimString(s) {
	if (s == null || s == "") {
		return "";
	}

	var str = new String(s);
	var index = 0;

	while (str.charAt(0) == " ") {
		str = str.substring(1);
	}

	index = str.length - 1;

	while (str.charAt(index) == " ") {
		str = str.substring(0, index);
		index = str.length - 1;
	}

	return str;
}

// 检查字符串是否是由数字组成
function isDigitString(str) {
	if (isExist(str) && !isNaN(str) && str.indexOf('.') == -1
			&& str.indexOf('e') == -1 && str.indexOf('E') == -1) {
		return true;
	}
	return false;
}

// 确定字符串是否为空
function isEmptyString(str) {
	if (str == null || str == "") {
		return true;
	}

	return false;

}

// 检查非空
function isEmpty(s) {
	if (isExist(s)) {
		var s1 = eval(s);
		if (!isEmptyString(s1.value)) {
			return false;
		}
	}

	return true;
}

// 检查数字
function isNumber(s) {
	if (isEmpty(s)) {
		return false;
	}

	var s1 = eval(s);

	if (isDigitString(s1.value)) {
		return true;
	}

	return false;
}

// 检查合法的标识符
function isValidChar(s) {
	if (isEmpty(s)) {
		return false;
	}

	var s1 = eval(s);
	var validchar = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-#!";
	var tmpstr = s1.value;
	for (var i = 0; i < tmpstr.length; i++) {
		tmpchar = tmpstr.charAt(i);
		if (validchar.indexOf(tmpchar) == -1) {
			return false;
		}
	}

	return true;
}

// 检查固定长度
function checkLength0(s, len) {
	if (isEmpty(s)) {
		return false;
	}

	var s1 = eval(s);
	if (s1.value.length == len) {
		return true;
	}

	return false;
}

// 检查长度范围
function checkLength1(s, min, max) {
	if (isEmpty(s)) {
		return false;
	}

	var s1 = eval(s);
	if (s1.value.length >= min && s1.value.length <= max) {
		return true;
	}

	return false;
}

// 检查金额
function checkAmountFormat(s) {
	if (isEmpty(s)) {
		return false;
	}

	revertMoney(s, false);

	var s1 = eval(s);
	if (!isNaN(s1.value)) {
		if (Number(s1.value) < 0) {
			return false;
		}
		if (s1.value.indexOf('.') == -1) {
			s.value += '.00';
			return true;
		}
		if (s1.value.length - s1.value.indexOf('.') > 3) {
			return false;
		}
		if (s1.value.length - s1.value.indexOf('.') == 2) {
			s.value += '0';
		}
		if (s1.value.length - s1.value.indexOf('.') == 1) {
			s.value += '00';
		}
		return true;
	}

	return false;
}

// 检查日期格式
function checkDateFormat(s) {
	if (isEmpty(s)) {
		return false;
	}

	var s1 = eval(s);

	var temp = s1.value;

	if (temp.length == 8 && isDigitString(temp)) {
		var yyyy = Number(temp.substring(0, 4));
		var mm = Number(temp.substring(4, 6));
		var dd = Number(temp.substring(6, 8));

		if (yyyy > 1969 && yyyy < 2051) {
			if (mm > 0 && mm < 13) {
				if (dd > 0) {
					switch (mm) {
						case 2 :
							if (yyyy % 4 != 0
									|| ((yyyy % 100 == 0) && (yyyy % 400 != 0))) {
								if (dd < 29) {
									return true;
								} else {
									return false;
								}
							}

							if (dd < 30) {
								return true;
							} else {
								return false;
							}
						case 4 :
						case 6 :
						case 9 :
						case 11 :
							if (dd < 31) {
								return true;
							} else {
								return false;
							}
						default :
							if (dd < 32) {
								return true;
							}
					}
				}
			}
		}
	}

	return false;
}

// 检查时间格式
function checkTimeFormat(s) {
	if (isEmpty(s)) {
		return false;
	}

	var s1 = eval(s);
	temp = s1.value;

	if (temp.length == 6 && isDigitString(temp)) {
		var hh = temp.substring(0, 2);
		var mm = temp.substring(2, 4);
		var ss = temp.substring(4, 6);
		if (hh >= 0 && hh < 24 && mm >= 0 && mm < 60 && ss >= 0 && ss < 60) {
			return true;
		}
	}

	return false;
}

// 转换日期格式
function formatDate(s) {
	if (isEmpty(s)) {
		return false;
	}
	var s1 = val(s);

	s.value = s1.value.substring(0, 4) + "-" + s1.value.substring(4, 6) + "-"
			+ s1.value.substring(6, 8);
}

// 检查Radio或CheckBox按钮或按钮组是否Checked
function isNotchecked(s) {
	if (!isExist(s)) {
		return false;
	}

	var s1 = eval(s);

	if (s1.length != null) {
		for (var i = 0; i < s1.length; i++) {
			if (s1[i].checked) {
				return true;
			}
		}

		return false;
	}

	return s1.checked;
}

// 检查是否是中文字符串
function isChineseChar(s) {
	if (isEmpty(s)) {
		return false;
	}

	for (var index = 0; index < s.length; index++) {
		if (s.charCodeAt(index) < 256) {
			return false;
		}
	}

	return true;
}

// 检查是否有中文字符
function isHasChineseChar(s) {
	if (isEmptyString(s)) {
		return true;
	}
	for (var index = 0; index < s.length; index++) {
		if (s.charCodeAt(index) >= 256) {
			return true;
		}
	}

	return false;
}

// 检查两个日期间隔是否在一个月以内
function checkDate(stdate, eddate) {
	var styear = Number(stdate.substring(0, 4));
	var stmonth = Number(stdate.substring(4, 6));
	var stday = Number(stdate.substring(6, 8));
	var edyear = Number(eddate.substring(0, 4));
	var edmonth = Number(eddate.substring(4, 6));
	var edday = Number(eddate.substring(6, 8));

	if (edyear < styear || (edyear - styear) > 1) {
		return false;
	}

	if (edyear > styear) {
		if (stmonth != 12) {
			return false;
		}

		if (edmonth != 1) {
			return false;
		}

		return (edday <= stday);
	}

	if (edmonth < stmonth || (edmonth - stmonth) > 1) {
		return false;
	}

	if (endmonth > stmonth) {
		return (edday <= stday);
	}

	return (edday >= stday);
}
// 检查日期
function checkDate(indate) {
	if (isNaN(indate)) {
		return 1;
	}

	var year = indate.substring(0, 4)
	var month = indate.substring(4, 6)
	var day = indate.substring(6)

	if (month < 1 || month > 12) {
		return 1;
	}
	if (day < 1 || day > 31) {
		return 1;
	}
	if ((month == 4 || month == 6 || month == 9 || month == 11) && day == 31) {
		return 1;
	}
	if (month == 2) {
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day == 29 && !isleap)) {
			return 1;
		}
	}
	return 0;
}

function QSearch(arrays, key) {

	var low = 0;
	var mid = 0;
	var high = arrays.length - 1;

	var dd = 0
	while (low <= high) {
		mid = Math.floor((low + high) / 2);

		var midVal
		var midObj

		midObj = arrays[mid];
		midVal = midObj.name;

		if (midVal < key)
			low = mid + 1;
		else if (midVal > key)
			high = mid - 1;
		else
			return arrays[mid]; // key found
	}
	return new dataobject("", "", 2); // key not found.
}

function compare(a, b) {
	if (a.name > b.name)
		return 1
	else if (a.name < b.name)
		return -1
	return 0
}

function dataobject(name, value, type) {
	this.name = name
	this.value = value
	this.type = type
}

function isChecked(chkboxname) {

	var form = window.document.forms[0]
	if (form == null)
		return false;
	for (var i = 0; i < form.elements.length; i++) {
		if (form.elements[i].type == "checkbox") {
			if (form.elements[i].name == chkboxname) {
				if (form.elements[i].checked)
					return true;
			}
		}
	}

	alert("复选框不能为空");
	return false;

}

// 使指定的名字的所有checkbox失效
function disableAll(checkbox) {

	var checkIdObj = eval(checkbox);
	// 判断对象是否为空
	if (checkIdObj == null) {
		return;
	}
	// 如果check列表对象多于一个
	if (checkIdObj.length) {
		for (i = 0; i < checkIdObj.length; i++) {
			checkIdObj[i].disabled = true;

		}

	}
	// 否则
	else {
		checkbox.disabled = true;
	}
}
// 使指定的名字的所有checkbox生效
function enableAll(checkbox) {

	var checkIdObj = eval(checkbox);
	// 判断对象是否为空
	if (checkIdObj == null) {
		return;
	}
	// 如果check列表对象多于一个
	if (checkIdObj.length) {
		for (i = 0; i < checkIdObj.length; i++) {
			checkIdObj[i].disabled = false;

		}

	}
	// 否则
	else {
		checkbox.disabled = false;
	}

}

// 选定或者取消选定指定的名字的所有checkbox
function checkAll(checkbox, status) {

	var checkIdObj = eval(checkbox);
	// 判断对象是否为空
	if (checkIdObj == null) {
		return;
	}
	// 如果check列表对象多于一个
	if (checkIdObj.length) {
		for (i = 0; i < checkIdObj.length; i++) {
			checkIdObj[i].checked = status;

		}

	}
	// 否则
	else {
		checkbox.checked = status;
	}

}

// 校验手机号码
function checkMobilePhone(str) {
	if (isEmptyString(str)) {
		alert("手机号码不能为空");
		return false;
	} else {

		if (11 != str.length) {
			alert("手机号码必须为11位");
			return false;
		}
	}
	return true;
}
